//
//  NSString+Verify.m
//  02-正则表达式实战【理解】
//
//  Created by HM on 16/4/19.
//  Copyright © 2016年 HM. All rights reserved.
//

#import "NSString+Verify.h"

@implementation NSString (Verify)

/**
 *  是否不是一个QQ
 */
- (BOOL) isQQ {
   
    //  匹配QQ号码,匹配规则:全部是都是数字,第一个字符非0,长度为(6~11)
    NSString *pattern = @"^[1-9]\\d{5,10}$";
    return [self matchWithPattern:pattern];
}

/**
 *  是否不是一个手机号码
 */
- (BOOL) isPhoneNumber{
    //  匹配规则 以0或86或空开头,后面第一个数字为"1",当第二数字为 "3,5,8" 第三个数字为"0-9",当第二数字为"7" 第三个数字为"6或7或8",当第二个数字为"4"时,第三个数字为"5或7",手机号码位数为11位.
    //  分组:使用小括号 | 表示或
    NSString *pattern =  @"^(0|86)?1([358]\\d|7[678]|4[57])\\d{8}$";
    return [self matchWithPattern:pattern];
}

/**
 *  是否不是一个邮箱
 */
- (BOOL) isEmail{
      NSString *pattern = @"^[a-z0-9]+([\\._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+\\.){1,3}[a-z0-9]+$";
      return [self matchWithPattern:pattern];
}



- (BOOL) matchWithPattern:(NSString *) pattern {
    //  创建正则表达式
    NSError *error = nil;
    NSRegularExpression *rge = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error];
    if (error) {
//        NSLog(@"创建正则表达式失败：%@",error);
        return NO;
    }
    
    //  匹配
    NSTextCheckingResult *result  = [rge firstMatchInString:self options:0 range:NSMakeRange(0, self.length)];
    
    
//    if (result) {
//        return YES;
//    }else{
//        return NO;
//    }
//  简化写法
    return result != nil;
}


@end
